#pragma once

#include "Scene.h"
#include "Level1Manager.h"
#include "Rect.h"

#define PLAYER_WALK_SPEED   30.0

#define LIFES_EASY          4
#define TIMER_EASY          99.99
#define ENEMY_SPEED_EASY    15.0

#define LIFES_MEDIUM        3
#define TIMER_MEDIUM        999.99
#define ENEMY_SPEED_MEDIUM  30.0

#define LIFES_HARD          1
#define TIMER_HARD          19.99
#define ENEMY_SPEED_HARD    45.0

/*!
 * \class Level1
 * \brief 
 */
class Level1 : public game_engine::Scene
{
///////////////////////////////////////////////////////////////////////////////
// Attribute definition
///////////////////////////////////////////////////////////////////////////////
private:
    Level1Manager sceneManager;

///////////////////////////////////////////////////////////////////////////////
// Method definition
///////////////////////////////////////////////////////////////////////////////
public:
    // Constructors and Destructors
    Level1(void);
    virtual ~Level1(void);

    // Others
    const BOOL initialize(void);
    const BOOL update(const FLOAT32 time);
	//void render(void);
    void finalize(void);

private:
    void createObjects(void);
    void createTerrain(void);
    void createPlayer(void);
    void createEnemies(void);
    void createHUD(void);
    void createPowerups(void);
    void createCameras(void);
    void createObstacles(void);

    void createEnemyA(const UINT32 index, 
        const game_engine::utils::Point &position, 
        const game_engine::utils::Rect &region, const FLOAT32 speed, 
        const FLOAT32 waitTime);
    void createStar(const UINT32 index, const game_engine::utils::Point &position);
    void createEnemyB(const UINT32 index, 
        const game_engine::utils::Point &position, 
        const FLOAT32 speed);

};
